Skip to content

ci: add a Tag release workflow that bumps and pushes the release tag - #87

Closed
mosherBT wants to merge 2 commits into
masterfrom
brennanmosher/ide-86-sdk-release-process-improvement
Closed

mosherBT wants to merge 2 commits into
masterfrom
brennanmosher/ide-86-sdk-release-process-improvement

Conversation

@mosherBT

Copy link
Copy Markdown
Contributor

Why

IDE-86. Releasing means tagging by hand; this makes it a dispatch.

What Changed

  • CI: tag.yml — workflow_dispatch with a minor (default) / major / patch bump. Refuses non-master refs, derives the next version from the latest release tag (bare X.Y.Z and vX.Y.Z both count), pushes vX.Y.Z, then calls CI.
  • CI: ios-sdk-ci.yml gains workflow_call, since a tag pushed with GITHUB_TOKEN doesn't trigger it. The release Slack post fires for these runs and shows the version.

How to Test

  • Run Tag release from master after merge

Notes

  • Next default release is v1.4.0 (latest is 1.3.0).
  • Podspec version and its bare-tag :tag source are unchanged.

@mosherBT mosherBT self-assigned this Oct 30, 2026
@mosherBT
mosherBT requested review from a team as code owners October 30, 2026 17:17
@jrosendahl-opt

Copy link
Copy Markdown
Contributor

Thanks, dispatching the release instead of tagging by hand is a good change. Two things to fix before we use it for 1.4.0, which has to reach CocoaPods trunk before it goes read-only on Dec 2:

1. The tag needs to be bare (1.4.0), not v1.4.0. The podspec's source is :tag => "#{spec.version}", so pod trunk push and every pod install for 1.4.0 look for a tag named 1.4.0. With only v1.4.0 on GitHub, the 1.4.0 pod can't be fetched. That nearly happened with 1.3.0: its release stayed a draft, so no 1.3.0 tag was created. CocoaPods only worked because a 1.3.0 branch was still around, and SPM's from: "1.3.0" didn't resolve at all until the tag was published on Nov 9. #85 already moved CI to bare tags for this reason. Pushing ${VERSION#v} instead of ${VERSION} (and passing that to CI) would fix it.

2. Check the computed version against the podspec. tag.yml works out the version from existing tags plus the bump input, while the podspec's spec.version and MARKETING_VERSION are bumped separately in the release prep PR. If they disagree, for example minor is picked when the prep PR said 1.3.1, the tag won't match what the podspec publishes. A step that fails unless the computed version equals spec.version in OptableSDK.podspec would catch that. Alternatively, read the version from the podspec instead of computing it.

Minor: once this lands, docs/releasing.md should say to run the "Tag release" workflow rather than creating the tag via a GitHub release.

@mosherBT mosherBT closed this Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants